using System;
using System.Runtime.Serialization;
using System.Collections.Generic;

namespace CoreEx.Samples.DomainModel
{

	/// <summary>
	/// A class that represents Suppliers.
	/// </summary>
	[Serializable]
	public class Supplier
	{
		#region Private Members

		private IList<Product> _products = new List<Product>();
		private IList<ProductSupplier> _productSuppliers = new List<ProductSupplier>();

		#endregion

		/// <summary>
		/// Gets or sets the Supplier ID
		/// </summary>
		public virtual int SupplierID { get; set; }

		/// <summary>
		/// Gets or sets the Company Name
		/// </summary>
		public virtual string CompanyName { get; set; }

		/// <summary>
		/// Gets or sets the Contact Name
		/// </summary>
		public virtual string ContactName { get; set; }

		/// <summary>
		/// Gets or sets the Contact Title
		/// </summary>
		public virtual string ContactTitle { get; set; }

		/// <summary>
		/// Gets or sets the Address
		/// </summary>
		public virtual string Address { get; set; }

		/// <summary>
		/// Gets or sets the City
		/// </summary>
		public virtual string City { get; set; }

		/// <summary>
		/// Gets or sets the Region
		/// </summary>
		public virtual string Region { get; set; }

		/// <summary>
		/// Gets or sets the Postal Code
		/// </summary>
		public virtual string PostalCode { get; set; }

		/// <summary>
		/// Gets or sets the Country
		/// </summary>
		public virtual string Country { get; set; }

		/// <summary>
		/// Gets or sets the Phone
		/// </summary>
		public virtual string Phone { get; set; }

		/// <summary>
		/// Gets or sets the Fax
		/// </summary>
		public virtual string Fax { get; set; }

		/// <summary>
		/// Gets or sets the Home Page
		/// </summary>
		public virtual string HomePage { get; set; }

		/// <summary>
		/// Gets the Products
		/// </summary>
		public IList<Product> Products 
		{
			get { return _products; }
		}

		/// <summary>
		/// Gets the Product Suppliers
		/// </summary>
		public IList<ProductSupplier> ProductSuppliers 
		{
			get { return _productSuppliers; }
		}
	}
}
